AWS CLIを使ってCloudWatchのカスタムダッシュボードを作成してみた
はじめに
こんにちは。大阪オフィスの林です。
AWS CLIを使ってCloudWatchのカスタムダッシュボードを作成する機会がありましたので、検証した内容をまとめておきたいと思います。
やってみた
使うコマンド
AWS CLIを使ってCloudWatchのカスタムダッシュボードを作成/編集する場合はput-dashboardコマンドを使用します。なお、既に作成済みのCloudWatchのカスタムダッシュボードの情報を取得する場合はget-dashboardコマンドやlist-dashboardsコマンドを使用します。
これらを踏まえ、今回のエントリでは以下3つの検証を進めていきます。
put-dashboard
を使ってCloudWatchのカスタムダッシュボードを作成get-dashboard
を使って作成したCloudWatchのカスタムダッシュボードの情報を取得put-dashboard
を使って既存のCloudWatchのカスタムダッシュボードを変更
put-dashboardでCloudWatchのカスタムダッシュボードを作成
put-dashboard
コマンドの引数は--dashboard-name
と--dashboard-body
の2つで、2つとも指定が必須の引数となります。
--dashboard-name
は任意のダッシュボード名を値として指定すれば良いのですが、--dashboard-body
はダッシュボードに表示させたい内容をJSON形式で指定する必要があります。
引数 | 説明 |
---|---|
--dashboard-name | ダッシュボードの名前を指定します。この名前のダッシュボードがすでに存在する場合、この呼び出しによってそのダッシュボードが変更され、現在のコンテンツが置き換えられます。そうでない場合は、新しいダッシュボードが作成されます。最大長は255で、有効な文字はA-Z、a-z、0-9、"-"、および"_"です。このパラメータは必須です。 |
--dashboard-body | ウィジェットやダッシュボード上の位置など、ダッシュボードに関する詳細情報をJSON形式で指定します。このパラメータは必須です。 |
それではやっていきたいと思います。
今回の検証では、AutoScalingのGroupInServiceInstancesのメトリクスを表示するダッシュボードを作成していきます。
[cloudshell-user@ip-10-0-100-117 ~]$ [cloudshell-user@ip-10-0-100-117 ~]$ aws cloudwatch put-dashboard --dashboard-name test-dashboard-1 --dashboard-body "{\"widgets\":[{\"type\":\"metric\",\"x\":0,\"y\":0,\"width\":6,\"height\":6,\"properties\":{\"metrics\":[[\"AWS/AutoScaling\",\"GroupInServiceInstances\",\"AutoScalingGroupName\",\"awseb-e-p2hrvpm9di-stack-AWSEBAutoScalingGroup-1FLZOH9NNBYTL\",{\"label\":\"test\"}]],\"view\":\"timeSeries\",\"stacked\":false,\"region\":\"ap-northeast-1\",\"stat\":\"Average\",\"period\":60,\"title\":\"GroupInServiceInstances\"}}]}" { "DashboardValidationMessages": [] } [cloudshell-user@ip-10-0-100-117 ~]$
--dashboard-body
を指定する際は下記も参考になると思います。
環境を確認すると、CloudWatchのカスタムダッシュボードが作成されていました。
get-dashboardでCloudWatchのカスタムダッシュボードの情報を取得
続いて、先ほど作成したCloudWatchのカスタムダッシュボードの情報をコマンドから取得してみます。
[cloudshell-user@ip-10-0-100-117 ~]$ [cloudshell-user@ip-10-0-100-117 ~]$ aws cloudwatch get-dashboard --dashboard-name test-dashboard-1 { "DashboardArn": "arn:aws:cloudwatch::123456789012:dashboard/test-dashboard-1", "DashboardBody": "{\"widgets\":[{\"type\":\"metric\",\"x\":0,\"y\":0,\"width\":6,\"height\":6,\"properties\":{\"metrics\":[[\"AWS/AutoScaling\",\"GroupInServiceInstances\",\"AutoScalingGroupName\",\"awseb-e-p2hrvpm9di-stack-AWSEBAutoScalingGroup-1FLZOH9NNBYTL\",{\"label\":\"test\"}]],\"view\":\"timeSeries\",\"stacked\":false,\"region\":\"ap-northeast-1\",\"stat\":\"Average\",\"period\":60,\"title\":\"GroupInServiceInstances\"}}]}", "DashboardName": "test-dashboard-1" } [cloudshell-user@ip-10-0-100-117 ~]$
シンプルですが上記のような感じで情報が取得できます。
put-dashboardを使って既存のCloudWatchのカスタムダッシュボードを変更
最後に、作成したCloudWatchのカスタムダッシュボードを編集してみたいと思います。今回の検証では、CloudWatchのカスタムダッシュボード作成時に指定したAutoScalingとは別のAutoScalingグループを指定する変更を加えてみたいと思います。
[cloudshell-user@ip-10-0-100-117 ~]$ [cloudshell-user@ip-10-0-100-117 ~]$ aws cloudwatch put-dashboard --dashboard-name test-dashboard-1 --dashboard-body "{\"widgets\":[{\"type\":\"metric\",\"x\":0,\"y\":0,\"width\":6,\"height\":6,\"properties\":{\"metrics\":[[\"AWS/AutoScaling\",\"GroupInServiceInstances\",\"AutoScalingGroupName\",\"awseb-e-ypp4cemcuj-stack-AWSEBAutoScalingGroup-1O6SM3BINJ1XU\",{\"label\":\"test\"}]],\"view\":\"timeSeries\",\"stacked\":false,\"region\":\"ap-northeast-1\",\"stat\":\"Average\",\"period\":60,\"title\":\"GroupInServiceInstances\"}}]}" { "DashboardValidationMessages": [] } [cloudshell-user@ip-10-0-100-117 ~]$
まとめ
CloudWatchのカスタムダッシュボードをCLIで作成したいというユースケースは限られてくるかと思いますが、この記事がどなたかの参考になりましたら幸いです。
以上、大阪オフィスの林がお送りしました!